/*
    全局测试套件的使用，
    1. 包含头文件 <gtest/gtest.h>
    2. 定义全局测试套件
        1. 定义测试套件初始接口，会在每个测试用例执行之前执行
        2. 定义测试套件清理接口，会在每个测试用例执行之后执行
    3. 定义测试用例
    5. 执行测试用例
*/

#include <gtest/gtest.h>
#include <iostream>
#include <unordered_map>


std::unordered_map<int, int> map;
class LocalTestSuite : public testing::Test
{
public:
    virtual void SetUp() override 
    {
        std::cout << "执行与每个测试用例之前" << std::endl;
        map.insert(std::make_pair(1, 1));
        map.insert(std::make_pair(2, 2));
        map.insert(std::make_pair(3, 3));
    }

    virtual void TearDown() override 
    {
        std::cout << "执行与每个测试用例之后" << std::endl;
        map.clear();
    }
public:
    std::unordered_map<int, int> map;
};

TEST_F(LocalTestSuite, find) 
{
    ASSERT_EQ(map.size(), 3);
    ASSERT_EQ(map.find(1)->second, 1);
    map.erase(1);
}

TEST_F(LocalTestSuite, remove)
{
    map.erase(1);
    ASSERT_EQ(map.size(), 2);
}

int main(int argc, char *argv[])
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}